import { defineStore } from "pinia"

export const useUserStore = defineStore("user", {
    state(): {
        menus: IMenu[];
        username: string
    } {
        return {
            menus: [],
            username: ""
        }
    },
    getters: {
        // 将后端返回的菜单数据变成我们需要渲染在侧边的数据
        activeMenus() {
            const arr: IActiveMenus[] = this.menus.filter(item => item.parentId === 0)

            // arr.forEach((item) => item.children = [])

            this.menus.forEach((item) => {
                let a = arr.find((citem) => citem.id === item.parentId && item.hidden === 0)
                // console.log(child);
                if (a) {
                    // 如果children不存在,那么children为空数组
                    if (!a.children) {
                        a.children = []
                    }
                    a.children.push(item)
                }
            })

            // 老师的写法
            // 1. 先找出所有的一级菜单
            // const arr: any[] = this.menus.filter((item) => item.parentId === 0);
            // // 2. 找出所有对应的一级菜单的二级菜单，放到 1级菜单的 chidren 数组里面
            // this.menus.forEach((item) => {
            //     // 找到我对应 1级菜单，把我就 1级的 children 里面的一个对象 , 并且 hidden 如果是 0 才是菜单
            //     const p = arr.find((p) => p.id === item.parentId && item.hidden === 0);
            //     if (p) {
            //         if (!p.chidren) {
            //             p.chidren = [];
            //         }
            //         p.chidren.push(item);
            //     }
            // });


            return arr
        }
    }
})